class ObjectPool {
  constructor(createFunc) {
    this.createFunc = createFunc; // 创建对象的函数
    this.pool = [];
  }

  init(size = 10) {
    // 初始化对象池
    for (let i = 0; i < size; i++) {
      this.pool.push(this.createFunc());
    }
  }

  // 从池中获取一个对象
  acquire() {
    if (this.pool.length > 0) {
      return this.pool.pop(); // 弹出一个对象
    }
    // 如果池中没有对象，则创建新的
    return this.createFunc();
  }

  // 归还一个对象到池中
  release(object) {
    this.pool.push(object);
  }

  // 获取池中当前剩余的对象数量
  size() {
    return this.pool.length;
  }
}

export {
  ObjectPool
}